package com.ssy.lingxi.member.merchant.service.paas;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.entity.MemberDO;
import com.ssy.lingxi.member.merchant.entity.RoleDO;

/**
 * （内部临时服务）系统初始化服务接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-10-15
 */
public interface IBasePaasService {

    /**
     * 创建平台后台会员及管理员
     * @return 操作结果
     */
    Wrapper<Void> createManagePlatformAdmin();

    /**
     * 系统初始化时，创建“平台”角色、平台后台管理员账号
     */
    void initPlatformAdmin();

    /**
     * 重新构建菜单的level和key字段
     */
    void rebuildMenuLevelAndKey();

    /**
     * 重新构建会员及其超级管理员权限
     * @param memberDO 会员
     */
    Wrapper<Void> rebuildMemberAuth(MemberDO memberDO);

    /**
     * 根据角色权限，重新构建所有权限
     * @param roleDO 角色
     */
    Wrapper<Void> rebuildAuth(RoleDO roleDO);

    /**
     * 禁用菜单可配置数据权限时，删除已有的数据权限配置
     * @param menuId 菜单Id
     * @param url 菜单Url
     * @param source 菜单source
     */
    void removeDataAuthAsync(Long menuId, String url, Integer source);
}
